其他
饿了么交易系统5年演化史
The following article is from 阿里巴巴中间件 Author 挽晴
个人简介:
2014年12月加入饿了么,当时参与后台系统的研发(Walis+Javis=>Walle),主要面向客服和BD。2015年5月开始接触订单系统的研发,7月负责订单研发组;度过单体应用到服务化这个阶段。2016年初搭建订单的测试团队,订单拆分为正逆向后,主要负责正向和交付部分。2017年做了一些平台搭建的探索。2018年初负责整个订单正逆向和交付,年中将下单、购物车部分一起归并,年底和商户订单部分整合,形成交易中台。2019年10月从交易中台转出,近期做了一小段时间的组织效能和架构。
太古
萌芽
订单组的成立
Zeus 解耦
zeus.eos => 订单服务
zeus.eus => 用户服务
zeus.ers => 商家服务
zeus.eps => 营销服务(新产物)
zeus.sms => 短信服务
...
组建测试团队
第一件事情,搭建自动化集成测试。
采用 RobotFramwork 来作为测试用例执行的基础
Jenkins 来实际调配在何处执行,并且满足执行计划的管理
基于 Django 搭建了一个简单的管理界面,用来管理用例和测试报告,并使得每一个测试用例可以被作为一个单元随意组装,如果对 Java 很熟悉的同学,这里做一个近似的类比,这里每一个用例都可以当成一个 SPI 。
另外引入了 Docker 来部署 slave 的环境,用的很浅,虽然当时饿了么在生产还没使用 Docker (饿了么生产上的容器化应该在 17 年左右)。
第二件事情,搭建性能测试。
背景:
搭建:
第三件事情,随机故障演练。
1.0版本:
2.0版本:
一些情况下部署的集群和服务注册中心机器数量可能不一致,即服务节点被暴力干掉后,服务注册中心不能主动发现和踢出。这是一个比较大的隐患。
每个集群都存在负载不均的现象,个别机器可能 CPU 利用率会偏高。(和负载均衡策略有关)
进行“毁灭打击”自恢复时,某几个节点的 CPU 利用率会显著高于其他节点,几个小时之后才会逐渐均匀。(和负载均衡策略有关)
单节点 CPU 负载较高时,负载均衡不会将流量路由到其它节点,即使这部分请求性能远差于其它节点,甚至出现很多超时。(和负载均衡、熔断的实现机制有关,Python 的 SOA 是在服务端做的熔断,而客户端没有)
大量服务的超时设置配置有误,框架支持配置软超时和硬超时,软超时只告警不阻断,然而默认的硬超时长达 20s 之久,很多服务只配置了软超时甚至没有配置,这其实是一个低级错误埋下的严重隐患,可能会没法避免一些雪崩。
个别场景下超时配置失效,通过对调用链路的埋点,以及和框架团队复现,最后锁定是一些使用消息队列发送消息的场景,Python 框架是利用了Gevent 来实现高并发的支持,框架没能抓住这个超时。
...
伴随体量上涨的一系列问题
Redis使用的改进
使用姿势的治理:
缓存机制的改进
消息使用的改进
错误的姿势
消息集群拆分
虚拟商品交易以及创新
早餐:
饿配送会员卡
其它
服务和业务治理
逆向中的售中和售后
物流对接
ToC & ToB & ToD:
ToD
小结
推荐阅读
360金融首席科学家张家兴:别指望AI Lab做成中台 我们想研发一个机器学习框架,6 个月后失败了
那个分分钟处理10亿节点图计算的Plato,现在怎么样了? 中国 App 出海“变形记” 詹克团反攻比特大陆:一场失去人心的自我挽留
你点的每个“在看”,我都认真当成了AI